package com.ruoyi.biz.mapper;

import com.ruoyi.biz.domain.EquipmentInfo;
import com.ruoyi.biz.dto.EquipmentInfoDTO;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 【请填写功能名称】Mapper接口
 *
 * @author ruoyi
 * @date 2020-11-30
 */
public interface EquipmentInfoMapper
{
    /**
     * 查询【请填写功能名称】
     *
     * @param equipmentId 【请填写功能名称】ID
     * @return 【请填写功能名称】
     */
    public EquipmentInfo selectEquipmentInfoById(Long equipmentId);

    /**
     * 查询【请填写功能名称】列表
     *
     * @param equipmentInfo 【请填写功能名称】
     * @return 【请填写功能名称】集合
     */
    public List<EquipmentInfo> selectEquipmentInfoList(EquipmentInfo equipmentInfo);

    /**
     * 新增【请填写功能名称】
     *
     * @param equipmentInfo 【请填写功能名称】
     * @return 结果
     */
    public int insertEquipmentInfo(EquipmentInfo equipmentInfo);

    /**
     * 修改【请填写功能名称】
     *
     * @param equipmentInfo 【请填写功能名称】
     * @return 结果
     */
    public int updateEquipmentInfo(EquipmentInfo equipmentInfo);


    /**
     * 删除【请填写功能名称】
     *
     * @param equipmentId 【请填写功能名称】ID
     * @return 结果
     */
    public int deleteEquipmentInfoById(Long equipmentId);

    /**
     * 批量删除【请填写功能名称】
     *
     * @param equipmentIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteEquipmentInfoByIds(Long[] equipmentIds);

    /**
     * 设备启停
     * @param enableOrDisable 启动或者停止的参数值
     * @return
     */
    int startOrStopEquipment(EquipmentInfo enableOrDisable);

    int isIgnoreWarn(EquipmentInfo equipmentInfo);

    String getEquipmentInfoByCode(String equipmentCode);

    /**
     * 查找管理员管理的全部设备
     * @param userId
     * @return
     */
    @Select("select * from equipment_info where emergency_contact = #{userId}")
    List<EquipmentInfo> findEquipmentListByUserId(Long userId);

    /**
     * 查找最大排序
     * @return
     */
    @Select("SELECT max(sort) FROM equipment_info")
    Integer findMaxSort();

    List<EquipmentInfoDTO> selectEquipmentInfoDTOList(EquipmentInfo equipmentInfo);

    List<EquipmentInfoDTO> selectInfoList(EquipmentInfo equipmentInfo);
}
